package org.example.c1;

import lombok.extern.slf4j.Slf4j;

/**
 * @author liu-rui
 * @date 2020/5/26 下午4:43
 * @description 演示栈溢出
 * 通过修改栈大小观察迭代次数变化
 * <p>
 * 实验１
 * 输出： 21900
 * 实验2：　-Xss300k
 * 输出：　3552
 * 实验3：　-Xss500k
 * 输出：　8549
 * <p>
 * 结论：
 * １. 分配的栈大小大，可以创建更多的栈帧
 * 2. 运行期间可通过jconsole观察到栈帧数的变化
 * @since
 */
@Slf4j
public class Demo4 {
    static int count = 0;

    public static void main(String[] args) {
        try {
            exec();
        } catch (Throwable ex) {
            log.error(ex.getMessage(), ex);
            log.info("迭代次数：{}", count);
        }
    }

    static void exec() throws InterruptedException {
        count++;
//        TimeUnit.MILLISECONDS.sleep(10);//通过jconsole观察线程堆栈变化
        exec();
    }
}
